package com.bbf.mathgen.service;

/**
 * 算式DTO
 * @author BBF
 */
public class MathDto {
  /**
   * 算式
   */
  private String formula;

  /**
   * 本次算式的结果
   */
  private int result;

  /**
   * 是否成功
   */
  private boolean success = true;

  public MathDto() {
    this.result = 0;
    this.formula = "";
  }

  public MathDto(MathDto dto, int n2, MathEnum m) {
    this(dto.getResult(), n2, m, dto.getFormula());
  }

  /**
   * 算式DTO
   * @param n1 第一个数字
   * @param n2 第二个数字
   * @param m 算术符号
   */
  public MathDto(int n1, int n2, MathEnum m) {
    this(n1, n2, m, "");
  }

  /**
   * 算式DTO
   * @param n1 第一个数字
   * @param n2 第二个数字，除法时，这个参数不需要。随机区间[1, n1]
   * @param m 算术符号
   * @param formula 算式前导，如果为空则前导就是n1，
   *                例如：MathDto(2,3,MathEnum.plus) -> this.formula="2+3"；
   *                MathDto(2,3,MathEnum.plus,"5-3") -> this.formula="5-3+3"；
   */
  public MathDto(int n1, int n2, MathEnum m, String formula) {
    StringBuilder sb = new StringBuilder();
    sb.append(formula.length() > 0 ? formula : n1);
    switch (m) {
      case plus:
        result = n1 + n2;
        sb.append(MathEnum.plus.getMsg());
        break;
      case minus:
        result = n1 - n2;
        sb.append(MathEnum.minus.getMsg());
        break;
      default:
        result = -999;
        success = false;
        break;
    }
    sb.append(n2);
    this.formula = success ? sb.toString() : "";
  }

  public String getFormula() {
    return formula;
  }

  public void setFormula(String formula) {
    this.formula = formula;
  }

  public int getResult() {
    return result;
  }

  public void setResult(int result) {
    this.result = result;
  }

  public boolean isSuccess() {
    return success;
  }

  public void setSuccess(boolean success) {
    this.success = success;
  }
}
